// 需求：要封装一个方法，我给你一个要读取文件的路径，你这个方法能帮我读取文件，并把内容返回给我

const fs = require('fs')
const path = require('path')

// fs.readFile(path.join(__dirname,'./files/1.txt'),'utf-8',(err,dataStr) =>{
//     if(err) throw err
//     console.log(dataStr)
// })

// 初衷：给定文件路径，返回读取到的文件内容
// 可以规定一下，callback中，有两个参数，第一个是失败的结果，第二个是成功的结果
// 同时，我们规定了，如果成功后，返回的结果，应该位于callback参数的第二个位置，
// 此时第一个位置由于没有出错，所以放置一个null；如果失败了，则第一个位置放置error对象
// 第二个放undefined
function getFileByPath(fpath,callback){
    fs.readFile(fpath,'utf-8',(err,dataStr) =>{ // 异步方法，主程序放到子程序中执行;
        // 主程序直接跳过 return dataStr，就会导致返回undefined

        // 如果报错，进入if分支后的代码没必要执行了
        if(err) return callback(err)
        // console.log(dataStr)
        // return dataStr
        callback(null,dataStr)
    })
}

// var result = getFileByPath(path.join(__dirname,'./files/1.txt'))
// console.log(result)
getFileByPath(path.join(__dirname,'./files/11.txt'),(err,dataStr)=>{
    // console.log(dataStr)
    if(err) return console.log(err.message)
    console.log(dataStr)
})